for hang in range(1, 10):
    for lie in range(1, hang+1):
        print('{} * {} = {:<4} '.format(hang, lie, hang*lie), end=' ')
        # 最后一个占位符中的:<4说明的是在这个占位符中的实际值的右边留4个位置
    print('')
print('='*130)


for hang in range(9, 0, -1):
    for lie in range(1, hang+1):
        print('{} * {} = {:<4} '.format(hang, lie, hang*lie), end=' ')
    print('')

print('='*130)


'''
   上面两个是默认方法，下面的去掉IF判断的分支就是输出完整矩形乘法表
   通过IF判断的行数和列数的大小关系，选择输出算式
   较好理解
   两种形式的行数分别是从上往下1-9和从下往上1-9
'''
for hang in range(1, 10):
    for lie in range(9, 0, -1):
        if hang < lie:
            print('             ', end=' ')
            # 不用输出的算式使用同等长度的空格字符代替
        else:
            print('{} * {} = {:<4} '.format(lie, hang, hang*lie), end=' ')
    print('')

print('='*130)

for hang in range(9, 0, -1):
    for lie in range(9, 0, -1):
        if hang < lie:
            print('             ', end=' ')
            # 不用输出的算式使用同等长度的空格字符代替
        else:
            print('{} * {} = {:<4} '.format(lie, hang, hang*lie), end=' ')
    print('')

print('='*130)










